﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace StackDemo
{
    class Program
    {
        //     Represents a simple last-in-first-out (LIFO) non-generic collection of objects
        // Реалізує звичайну LIFO (останній прийшов, перший пішов)
        // чергу обєктів
        static void Main(string[] args)
        {
            // створюємо чергу та вказуємо початкову ємність

            Stack st = new Stack(10);

            st.Push("White");
            st.Push("Black");
            st.Push("Red");
            st.Push("Green");
            st.Push("Yellow");
            st.Push("Pink");

            foreach (string c in st)
            {
                Console.WriteLine(c);
            }

            // виймаємо з стека останній елемент
            string last = (string)st.Pop();
            Console.WriteLine("Pop last: {0}. Stack size: {1}", last, st.Count);
            st.Push(last);

            // отримуємо останній елемент з стека, прицьому він з самого стека не виймається
            last = (string)st.Peek();
            Console.WriteLine("Peek last: {0}. Stack size: {1}", last, st.Count);

            // чи містить стек вказаний елемент
            bool bc = st.Contains("Green");
            Console.WriteLine("Is green in stack? {0}", bc ? "Yes." : "No.");

            string[] a = new string[10];
            st.CopyTo(a, 1);            

            // очищає колекцію
            st.Clear();

        }
    }
}
